/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package our.gui;

/**
 *
 * @author keysman
 */
interface ourInterfaceForm {
    public void INSERT() throws java.sql.SQLException;
    public void DELETE() throws java.sql.SQLException;
    public void UPDATE() throws java.sql.SQLException;
    public void GOLAST();  // Shift + F5
    public void GOFIRST(); // Shift + F7
    public void GONEXT();  // F5
    public void GOPREV();  // F7
    
    
    public void GOTO(); // In base al valore contenuto nell'id carico il record
    
    public void GOTO(Object[] KEY); // In base al valore contenuto in KEY carico il record corrispondente
    
    public void CALLZOOM(); // Cosa fare quando viene premuto F2 (zoom)


    /**
     * In questa funzione l'utente deve ritornare un oggetto di tipo Object che contiene i valori
     * dei campi della form. Non è necessario implementarlo ma centralizza la lettura dei campi.
     * Può essere usata in UPDATE, DELETE e INSERT.
     *
     * @return Un Object contenente i valori dei vari campi
     */
    public Object GETFIELDSVALUE();
    
    /**
     * Riempie i campi con i valori appena caricati
     */
    public void SETFIELDSVALUE();    
    
    /**
     * In questa funzione vengono eseguiti i controlli su tutta la maschera prima di
     * effettuare il salvataggio dei dati. (Ad es. il controllo che tutti i campi
     * 'required' contengano qualcosa)
     * @param bShowTheMessage true se deve visualizzare i messaggi, false altrimenti
     * @return true se si può procedere al salvataggio, false altrimenti
     */
    public boolean BEFOREWRITING(boolean bShowTheMessage);
    
    
    /**
     * Questa funione viene chiamata dalla superclasse ourForm quando è richiesta
     * la pulizia dei campi. Questa funzione torna utile quando ci sono dei campi
     * di sola visualizzazione. Ad esempio in Gestione Fatture abbiamo diversi
     * esempi dell'utilizzo di questa funzione: vedi Causale Fattura, Estremi Clienti/Fornitori ...
     */
    public void RESET();


    /**
     * Questa funzione viene richiamata automaticamente ogni volta che i campi vengono
     * o abilitati (uscita dal keyframe) o disabilitati (keyframe abilitato)
     * @param bEnable true quando si esce dal keyframe, false altrimenti
     */
    public void ENABLE(boolean bEnable);


    /**
     * Questa funzione viene chiamata tutte le volte che viene generato un lock.
     * Permette al programmatore di creare una chiave personalizzata: vedi caso in cui si
     * voglia far premere 0 all'utente finale e si deve cercare una chiave 'libera'
     * @return null se si usa la chiave generata, una stringa contenente il valore della chiave.
     *              Nel caso di chiavi multiple  i valori sono sequenziali separati dal simbolo paragrafo §
     */
    public String USER_FOUND_KEY();
}

